yzqzss|一座桥在给房东打工 log
有哪些 repo 的 E2E 测试写得好的?我借鉴借鉴最佳实践。☺️ Go/Py 优先。
最后用了一个不知道算不算主流的 E2E 方法——用日志来做 E2E 测试。我想不出其它非侵入式的 E2E 做法了。
做法就是,测试时把主程序拉起来,让主程序把日志重定向到某个 socket。
测试套件连上 socket 拿到日志流,然后就是 assert 日志里有没有我们预期/不预期的内容。
这个方法好在不需要插桩或者 mock 任何东西。
然后为了拿到 coverage 和让 -race 之类的 go test 功能能覆盖到被测试的主程序,所以不能 execve 主程序的二进制起新进程。需要在 Test* 函数里调用主程序的入口函数来把主程序拉起来。
然后由于 go test 会把同一个 package 的 *_test.go 里的全部 Test* 函数都编译到同一个二进制、在同一个进程里跑测试,所以需要把每个 E2E test 写到不同的 package 里。
https://github.com/internetarchive/Zeno/pull/403
——
想知道这种做法另类吗,有先辈用过吗?
做法就是,测试时把主程序拉起来,让主程序把日志重定向到某个 socket。
测试套件连上 socket 拿到日志流,然后就是 assert 日志里有没有我们预期/不预期的内容。
这个方法好在不需要插桩或者 mock 任何东西。
然后为了拿到 coverage 和让 -race 之类的 go test 功能能覆盖到被测试的主程序,所以不能 execve 主程序的二进制起新进程。需要在 Test* 函数里调用主程序的入口函数来把主程序拉起来。
然后由于 go test 会把同一个 package 的 *_test.go 里的全部 Test* 函数都编译到同一个二进制、在同一个进程里跑测试,所以需要把每个 E2E test 写到不同的 package 里。
https://github.com/internetarchive/Zeno/pull/403
——
想知道这种做法另类吗,有先辈用过吗?
GitHub
WIP: E2E test by yzqzss · Pull Request #403 · internetarchive/Zeno
issue: #162
Baoshuo's Channel
#Blog: 从 CSS 字符串到 AST(一)—— 词法分析器(Lexer)的实现 https://blog.baoshuo.ren/post/css-lexer/
Blink 的底子真好,稍微优化一下就达到 0-allocation 了。
https://github.com/renbaoshuo/go-css-lexer/pull/1
https://github.com/renbaoshuo/go-css-lexer/pull/1